package com.rzcode.coinex.kernel.dao.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.rzcode.coinex.kernel.common.enums.BooleanEnum;
import com.rzcode.coinex.kernel.common.enums.CommonStateEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;

/**
 * OTC币种实体类，用于存储OTC交易中支持的数字货币信息。
 *
 * @author Bridge.Xu
 * @date 2020年01月09日
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "otc_coin")
public class OtcCoin {

    /**
     * OTC货币编号，主键ID，自动生成。
     */
    @ApiModelProperty(value = "OTC货币编号")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * OTC货币名称，例如比特币、以太坊等。
     */
    @ApiModelProperty(value = "OTC货币名称")
    private String name;

    /**
     * 中文名称，货币的中文表述。
     */
    @ApiModelProperty(value = "OTC货币中文名称")
    private String nameCn;

    /**
     * 缩写，货币的简称，如BTC、ETH。
     */
    @ApiModelProperty(value = "OTC货币缩写")
    private String unit;

    /**
     * 状态，货币是否可用，正常或禁用。
     */
    @ApiModelProperty(value = "状态")
    private CommonStateEnum status = CommonStateEnum.NORMAL;

    /**
     * 交易手续费率，交易时收取的手续费比例。
     */
    @ApiModelProperty(value = "交易手续费率")
    private BigDecimal jyRate;

    /**
     * 卖出广告最低发布数量，发布卖出广告时的最低数量限制。
     */
    @ApiModelProperty(value = "卖出广告最低发布数量")
    private BigDecimal sellMinAmount;

    /**
     * 买入广告最低发布数量，发布买入广告时的最低数量限制。
     */
    @ApiModelProperty(value = "买入广告最低发布数量")
    private BigDecimal buyMinAmount;

    /**
     * 排序，用于展示时的排序依据。
     */
    @ApiModelProperty(value = "排序")
    private int sort;

    /**
     * 是否是平台币，标识是否为平台发行的货币。
     */
    @ApiModelProperty(value = "是否是平台币")
    private BooleanEnum isPlatformCoin = BooleanEnum.IS_FALSE;
}
